WordPress 设计缺陷 + WooCommerce 漏洞可导致站点遭控制
编译:360代码卫士团队
攻击者能够结合利用WordPress 插件的权限系统中的设计缺陷和非常热门的电商插件 WooCommerce 中的文件删除漏洞,获取对 WordPress 站点的完全控制权限。
WooCommerceby Automattic 是一款热门的 WordPress 插件,为博客添加电商功能以便站点所有人托管自己的商店。WordPress.org 网站上的 WooCommerce 插件页面指出,该插件的安装数量已超过400万次。
当WordPress插件以不同的用户角色安装后,它们并不会创建自己的认证系统,而是使用 WordPress权限系统。插件创建新的被分配不同的 WordPress 功能的角色,然后利用插件功能限定这些角色如何在 WordPress 中和其它用户或设置进行交互。
PHP 安全公司RIPS Tech 的研究员 Simon Scannell 发布新的研究成果指出,安装 WooCommerce 后,它会创建一个具有“edit_users” WordPress 功能/权限的 Shop Manager 角色。这一功能允许用户编辑任何 WordPress 用户,包括管理员账户。
可通过如下的 WooCommerce 插件看到 Shop Manager 角色所具有的权限。
// Shop manager role.
add_role(
'shop_manager', // Internal name of the new role
'Shop manager', // The label for displaying
array( // Capabilities
⋮
'read_private_posts' => true,
'edit_users' => true,
'edit_posts' => true,
⋮
)
);
由于站点所有人显然不想让插件用户为整个站点编辑管理员权限,WooCommerce 创建了一种功能,能够阻止该角色下的用户编辑管理员角色下的用户。
WordPress 插件/权限系统中的问题是,如果禁用了 WooCommerce 插件,那么限制 Shop Manager 能够编辑用户的功能就不可访问,因此,Shop Manager 就能编辑管理员角色下的用户。
然而,禁用插件的唯一方法是使用管理员账户或者删除和该插件关联的文件。
而这正是 RIPS Tech 所发现的文件删除漏洞起作用的地方。
文件删除漏洞 + WorPress 设计缺陷 = Pwn
Scannell 使用 RIPS 代码分析软件在 WooCommerce 3.4.5 及更早版本中发现了一个文件删除漏洞。该漏洞存在于 Shop Manager能访问的该插件的日志删除功能中。
Shop Manager角色下的用户能利用这个漏洞逃逸预期文件夹,方法是向传递的参数中添加 ..。
例如,要删除主插件文件,它们能够将如下参数传递给日志删除功能,后者将删除 "wp-content/wc-logs/../../plugins/woocommerce-3.4.5/woocommerce.php"文件。
../../plugins/woocommerce-3.4.5/woocommerce.php
文件删除后,插件无法被加载,之后会遭 WordPress 禁用。
插件禁用后,Shop Manager 拥有编辑任何用户包括管理员账户的完整权限。管理员账户遭控制后,攻击者拥有对站点的完全访问权限。
应当注意的是,要成功利用该漏洞,攻击者需要访问 Shop Manager 角色下的用户账户。因此这种攻击要么是内鬼完成,要么是以其它方式获取 Shop Manager 的凭证。Scannell 表示,“这种访问权限可通过 XSS 漏洞或钓鱼攻击获取。”
然而,该漏洞确实说明了插件的权限系统如何可被通过利用一般不会造成网站接管的漏洞而遭利用。该漏洞已在10月11日发布的 WooCommerce 版本3.4.6 中予以修复。
虽然 WordPress 可被配置为自动更新所有插件,但 Scannel 解释称并非默认启用,因此很多用户运行的可能仍然是老旧的易受攻击的 WooCommerce 插件。
因此,所有用户由必要检查下插件的安装版本,并更新至最新版本3.4.6。
Automattic 尚未就此事置评。
推荐阅读
原文链接
https://www.bleepingcomputer.com/news/security/wordpress-design-flaw-woocommerce-vulnerability-leads-to-site-takeover/
本文由360代码卫士编译,不代表360观点,转载请注明 “转自360代码卫士www.codesafe.cn”。